package com.example.david;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Principal extends Activity {
	
	public final static String EXTRA_MESSAGE = "com.example.david.MESSAGE";
	public final static Usuario principal_usuario = new Usuario("David");
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        
        System.out.println("Inicializando");
        
        
        if(principal_usuario.getEmpresas().size() == 0){
	        Empresa nike = new Empresa("Nike");
	        Empresa coca = new Empresa("Coca"); 
	        Empresa cpwr = new Empresa("Cpwr"); 
	        
	        principal_usuario.gerarPontos(new Pontos(new Date(), 100, coca, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 500, coca, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 100, nike, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 500, nike, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 250, nike, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 500, nike, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 500, cpwr, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 500, cpwr, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 500, cpwr, principal_usuario));
	        principal_usuario.gerarPontos(new Pontos(new Date(), 500, cpwr, principal_usuario));
        }
        
        System.out.println(principal_usuario.getEmpresas());
        
        //Capturo a lista pelo id 
        ListView listview = (ListView) findViewById(R.id.listView1);
        
        //Origem dos valores da lista
        String[] valores = getNomesEmpresas(principal_usuario);
        
        //Adiciono os valores a um Array List para ser usado depois no ArrayAdapter
        ArrayList<String> lista = new ArrayList<String>();
        lista.clear();
        for (int i = 0; i < valores.length; i++) {
			lista.add(valores[i]);
		}
        
        System.out.println("LISTA COMPLETA "+ lista);
        
        StableArrayAdapter adapter = new StableArrayAdapter(this,
                android.R.layout.simple_list_item_1, lista);
            listview.setAdapter(adapter);
            
        //Vou criar um Intent para abrir o detalhe da Empresa no Click    
        

        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> pai, View view, int posicao,	long id) {
				
				
				//Agora tenho o valor do Item da lista
				String item = (String) pai.getItemAtPosition(posicao);
				
				//Crio um intent para popular a proxima tela
				Intent intent = new Intent(Principal.this, Detalhes.class);
				
				//Coloco esse valor no intent e tento startar a Activity
				intent.putExtra(EXTRA_MESSAGE, item);

				System.out.println("Clicando em " + item);
				startActivity(intent);
				
			}
		});
        
    }
    
    public String[] getNomesEmpresas(Usuario pUsuario){
    	
    	System.out.println("Gerando a lista de empresas para o Usuario " + pUsuario.getNome());
    	ArrayList<Empresa> empresasDoUsuario = pUsuario.getEmpresas();
    	String[] nomesEmpresas = new String[empresasDoUsuario.size()];
    	
    	for(int i = 0; i < empresasDoUsuario.size(); i++){
    		nomesEmpresas[i] = empresasDoUsuario.get(i).getNome();
    	}
    	return nomesEmpresas;
    	
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }
    
    private class StableArrayAdapter extends ArrayAdapter<String> {

    	//Coloco os items em um HashMap para manipulacao facil e rapida
        HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();

        public StableArrayAdapter(Context context, int textViewResourceId,
            List<String> objects) {
          super(context, textViewResourceId, objects);
          for (int i = 0; i < objects.size(); ++i) {
            mIdMap.put(objects.get(i), i);
          }
        }

        @Override
        public long getItemId(int position) {
          String item = getItem(position);
          return mIdMap.get(item);
        }

        @Override
        public boolean hasStableIds() {
          return true;
        }
    }
    
}
